package com.Final.controller;

import com.Final.pojo.User;
import com.Final.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RequestMapping(value = "/ctrl")  //使用ctrl作为控制器的url
@RestController
public class UserCtrl {

    @Autowired  //自动填装Bean
    private UserService userService;

    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    //由于删除功能仅在主页面实现，所以不需要另起ResponseBody
    //删除功能使用delete作为url 以及 POST 传递方式
    public Integer delete(Integer userId) {
        System.out.println(userId);
        //在console中返回被删除的用户id
        int result = userService.delete(userId);
        //作为返回的用户id作为返回值传递给前端实现删除功能
        return result;
    }

//    @RequestMapping(value = "/update", method = RequestMethod.POST)  更新功能需要另起ResponseBody
    @PostMapping("update")  //用update作为更新功能的url
    @ResponseBody
    public String update(User user) { //以实体类作为直接传值
        int result = userService.Update(user);
        //更新需要传入整个实体类的值
        if (result >= 1) {
            //简单判断更新是否成功并返回
            return "修改成功";
        } else {
            return "修改失败";
        }
    }

    @RequestMapping(value = "/insert", method = RequestMethod.POST)  //新增功能使用insert作为url地址  在xml文件中实现方法
    public User insert(User user) { //同样与update需要整个实体类的属性
        return userService.insertUser(user);
    }

    @RequestMapping("/ListUser") //ListUser作为主要页面展示的url 使用List列表支持前端页面的展示
    @ResponseBody
    public List<User> ListUser() {
        return userService.listUser();
    }

    @RequestMapping("ListByName")  //查询方法排序的主要实现函数 以ListByName作为url 在查询方法实现时以姓名模糊查找作为排序
    @ResponseBody
    public List<User> ListUserByName(String userName) { //因为以姓名作为查找 所以只需要使用姓名
        return userService.findByName(userName);
    }

    @RequestMapping("/page")  //前端页面显示用户数据信息时实现翻页功能 page作为实现此功能的url
    @ResponseBody
    public List<User> page(Integer page){
        int pageNow = page == null ? 1 : page;
        int pageSize = 5;
        //每一页展示5位用户信息
        int startRows = pageSize*(pageNow-1);
        //算法设计  自增1
        List<User> list = userService.queryPage(startRows);
        return list;
    }

    @RequestMapping(value="/rows")  //翻页功能的页码计算
    @ResponseBody
    public int rows(){
        return userService.getRowCount();
    }
}

